home *** CD-ROM | disk | FTP | other *** search
- /*
- Component Interface.h
-
- Describes the component interface routines and their parameters.
-
- Important note about naming conventions: Read the file "API Readme.h" to understand
- the prefixes used in all of the calls...
- */
-
- #if 0 // don't include into compilation of code
-
- /* ***** Starting Up and Shutting Down ***** */
-
- pascal ICError ICCStart(internetConfigurationComponent *inst, OSType creator);
- /*
- Call this at application initialisation. Set creator to your application
- creator to allow for future expansion of the IC system. Returns
- inst as a connection to the IC system.
- */
-
- pascal ICError ICCStop(internetConfigurationComponent inst);
- /*
- It is illegal to call this routine inside a ICBegin/End pair.
-
- Call this at application initialisation, after which inst
- is no longer valid connection to IC.
- */
-
- /* ***** Specifying a Configuration ***** */
-
- pascal ICError ICCFindConfigFile(internetConfigurationComponent inst, short count, ICDirSpecArrayPtr folders);
- /*
- It is illegal to call this routine inside a ICBegin/End pair.
-
- Call to configure this connection to IC.
- Set count as the number of valid elements in folders.
- Set folders to a pointer to the folders to search.
- Setting count to 0 and folders to nil is OK.
- Searches the specified folders and then the Preferences folder
- in a unspecified manner.
- */
-
- pascal ICError ICCFindUserConfigFile(internetConfigurationComponent inst, ICDirSpec *where)
- /*
- Requires IC 1.1.
-
- It is illegal to call this routine inside a ICBegin/End pair.
-
- Similar to ICFindConfigFile except that it only searches the folder
- specified in where. If the input parameters are valid the routine
- will always successful configure the instance, creating an
- empty configuration if necessary
- For use with double-clickable preference files.
- */
-
- pascal ICError ICCGeneralFindConfigFile(internetConfigurationComponent inst, Boolean search_prefs, Boolean can_create,
- short count, ICDirSpecArrayPtr folders)
- /*
- Requires IC 1.2.
-
- It is illegal to call this routine inside a ICBegin/End pair.
-
- Call to configure this connection to IC.
- This routine acts as a more general replacement for
- ICFindConfigFile and ICFindUserConfigFile.
- Set search_prefs to true if you want it to search the preferences folder.
- Set can_create to true if you want it to be able to create a new config.
- Set count as the number of valid elements in folders.
- Set folders to a pointer to the folders to search.
- Setting count to 0 and folders to nil is OK.
- Searches the specified folders and then optionally the Preferences folder
- in a unspecified manner.
- */
-
- pascal ICError ICCChooseConfig(internetConfigurationComponent inst)
- /*
- Requires IC 1.2.
-
- It is illegal to call this routine inside a ICBegin/End pair.
-
- Requests the user to choose a configuration, typically using some
- sort of modal dialog. If the user cancels the dialog the configuration
- state will be unaffected.
- */
-
- pascal ICError ICCChooseNewConfig(internetConfigurationComponent inst)
- /*
- Requires IC 1.2.
-
- It is illegal to call this routine inside a ICBegin/End pair.
-
- Requests the user to create a new configuration, typically using some
- sort of modal dialog. If the user cancels the dialog the configuration
- state will be unaffected.
- */
-
- pascal ICError ICCGetConfigName(internetConfigurationComponent inst, Boolean longname, Str255 name)
- /*
- Requires IC 1.2.
-
- You must specify a configuration before calling this routine.
- Returns a string that describes the current configuration at a user
- level. Set longname to true if you want a long name, up to 255
- characters, or false if you want a short name, typically about 32
- characters.
- The returned string is for user display only. If you rely on the
- exact format of it, you will conflict with any future IC
- implementation that doesn't use explicit preference files.
- */
-
- pascal ICError ICCGetConfigReference(internetConfigurationComponent inst, ICConfigRefHandle ref)
- /*
- Requires IC 1.2.
-
- You must specify a configuration before calling this routine.
- Returns a self-contained reference to the instance's current
- configuration.
- ref must be a valid non-nil handle and it will be resized to fit the
- resulting data.
- */
-
- pascal ICError ICCSetConfigReference(internetConfigurationComponent inst, ICConfigRefHandle ref, long flags)
- /*
- Requires IC 1.2.
-
- It is illegal to call this routine inside a ICBegin/End pair.
-
- Reconfigures the instance using a configuration reference that was
- got using ICGetConfigReference reference. Set the
- icNoUserInteraction_bit in flags if you require that this routine
- not present a modal dialog. Other flag bits are reserved and should
- be set to zero.
- ref must not be nil.
- */
-
- pascal ICError ICCSpecifyConfigFile(internetConfigurationComponent inst, FSSpec *config)
- /*
- It is illegal to call this routine inside a ICBegin/End pair.
-
- For use only by the IC application.
- If you call this routine yourself, you will conflict with any
- future IC implementation that doesn't use explicit preference files.
- */
-
- /* ***** Getting Information ***** */
-
- pascal ICError ICCGetSeed(internetConfigurationComponent inst, long *seed)
- /*
- You do not have to specify a configuration before calling this routine.
- You do not have to be inside an ICBegin/End pair to call this routine.
- Returns the current seed for the IC prefs database.
- This seed changes each time a non-volatile preference is changed.
- You can poll this to determine if any cached preferences change.
- */
-
- pascal ICError ICCGetPerm(internetConfigurationComponent inst, ICPerm *perm)
- /*
- You do not have to specify a configuration before calling this routine.
- Returns the access permissions currently associated with this instance.
- While applications normally know what permissions they have,
- this routine is designed for use by override components.
- */
-
- pascal ICError ICCDefaultFileName(internetConfigurationComponent inst, Str63 name)
- /*
- You do not have to specify a configuration before calling this routine.
- You do not have to be inside an ICBegin/End pair to call this routine.
- Returns the default file name for IC preference files.
- Applications should never need to call this routine.
- If you rely on information returned by this routine yourself,
- you may conflict with any future IC implementation that doesn't use
- explicit preference files.
- The component calls this routine to set up the default IC file name.
- This allows this operation to be intercepted by a component that has
- captured us. It currently gets it from the component resource file.
- The glue version is hardwired to "Internet Preferences".
- */
-
- /* ***** Reading and Writing Preferences ***** */
-
- pascal ICError ICCBegin(internetConfigurationComponent inst, ICPerm perm)
- /*
- You must specify a configuration before calling this routine.
- It is illegal to call this routine inside a ICBegin/End pair.
- Starting reading or writing multiple preferences.
- A call to this must be balanced by a call to ICEnd.
- Do not call WaitNextEvent between these calls.
- The perm specifies whether you intend to read or read/write.
- Only one writer is allowed per instance.
- Note that this may open resource files that are not closed
- until you call ICEnd.
- */
-
- pascal ICError ICCGetPref(internetConfigurationComponent inst, ConstStr255Param key, ICAttr *attr, Ptr buf, long *size)
- /*
- You must specify a configuration before calling this routine.
- If you are getting or setting multiple preferences, you should place
- these calls within an ICBegin/ICEnd pair.
- If you call this routine outside of such a pair, it implicitly
- calls ICBegin(inst, icReadOnlyPerm).
- Reads the preference specified by key from the IC database to the
- buffer pointed to by buf and size.
- key must not be the empty string.
- If buf is nil then no data is returned.
- size must be non-negative.
- attr and size are always set on return. On errors (except icTruncatedErr)
- attr is set to ICattr_no_change and size is set to 0.
- size is the actual size of the data.
- attr is set to the attributes associated with the preference.
- If this routine returns icTruncatedErr then the other returned
- values are valid except that only the first size bytes have been
- return. size is adjusted to reflect the true size of the preference.
- Returns icPrefNotFound if there is no preference for the key.
- */
-
- pascal ICError ICCSetPref(internetConfigurationComponent inst, ConstStr255Param key, ICAttr attr, Ptr buf, long size)
- /*
- You must specify a configuration before calling this routine.
- If you are getting or setting multiple preferences, you should place
- these calls within an ICBegin/ICEnd pair.
- If you call this routine outside of such a pair, it implicitly
- calls ICBegin(inst, icReadWritePerm).
- Sets the preference specified by key from the IC database to the
- value pointed to by buf and size.
- key must not be the empty string.
- size must be non-negative.
- If buf is nil then the preference value is not set and size is ignored.
- If buf is not nil then the preference value is set to the size
- bytes pointed to by buf.
- If attr is ICattr_no_change then the preference attributes are not set.
- Otherwise the preference attributes are set to attr.
- Returns icPermErr if the previous ICBegin was passed icReadOnlyPerm.
- Returns icPermErr if current attr is locked, new attr is locked and buf <> nil.
- */
-
- pascal ICError ICCFindPrefHandle(internetConfigurationComponent inst, ConstStr255Param key, ICAttr *attr, Handle prefh)
- /*
- Requires IC 1.2.
-
- You must specify a configuration before calling this routine.
- If you are getting or setting multiple preferences, you should place
- these calls within an ICBegin/ICEnd pair.
- If you call this routine outside of such a pair, it implicitly
- calls ICBegin(inst, icReadWritePerm).
- This routine effectively replaces ICGetPrefHandle.
- Reads the preference specified by key from the IC database into
- a handle, prefh.
- key must not be the empty string.
- attr is set to the attributes associated with the preference.
- You must set prefh to a non-nil handle before calling this routine.
- If the preference does not exist, icPrefNotFoundErr is returned.
- */
-
- pascal ICError ICCGetPrefHandle(internetConfigurationComponent inst, ConstStr255Param key, ICAttr *attr, Handle *prefh)
- /*
- Requires IC 1.1.
-
- You must specify a configuration before calling this routine.
- If you are getting or setting multiple preferences, you should place
- these calls within an ICBegin/ICEnd pair.
- If you call this routine outside of such a pair, it implicitly
- calls ICBegin(inst, icReadOnlyPerm).
- This routine is now obsolete. Use ICFindPrefHandle instead.
- Reads the preference specified by key from the IC database into
- a newly created handle, prefh.
- key must not be the empty string.
- attr is set to the attributes associated with the preference.
- The incoming value of prefh is ignored.
- A new handle is created in the current heap and returned in prefh.
- If the routine returns an error, prefh is set to nil.
- If the preference does not exist, no error is returned and prefh is set
- to an empty handle.
- */
-
- pascal ICError ICCSetPrefHandle(internetConfigurationComponent inst, ConstStr255Param key, ICAttr attr, Handle prefh)
- /*
- Requires IC 1.1.
-
- You must specify a configuration before calling this routine.
- If you are getting or setting multiple preferences, you should place
- these calls within an ICBegin/ICEnd pair.
- If you call this routine outside of such a pair, it implicitly
- calls ICBegin(inst, icReadWritePerm).
- Sets the preference specified by key from the IC database to the
- value contained in prefh.
- key must not be the empty string.
- If prefh is nil then the preference value is not set.
- If buf is not nil then the preference value is set to the data
- contained in it.
- If attr is ICattr_no_change then the preference attributes are not set.
- Otherwise the preference attributes are set to attr.
- Returns icPermErr if the previous ICBegin was passed icReadOnlyPerm.
- Returns icPermErr if current attr is locked, new attr is locked and prefh <> nil.
- */
-
- pascal ICError ICCCountPref(internetConfigurationComponent inst, long *count)
- /*
- You must specify a configuration before calling this routine.
- You must be inside an ICBegin/End pair to call this routine.
- Counts the total number of preferences.
- If the routine returns an error, count is set to 0.
- */
-
- pascal ICError ICCGetIndPref(internetConfigurationComponent inst, long n, Str255 key)
- /*
- You must specify a configuration before calling this routine.
- You must be inside an ICBegin/End pair to call this routine.
- Returns the key of the Nth preference.
- n must be positive.
- Returns icPrefNotFoundErr if n is greater than the total number of preferences.
- If the routine returns an error, key is undefined.
- */
-
- pascal ICError ICCDeletePref(internetConfigurationComponent inst, ConstStr255Param key)
- /*
- You must specify a configuration before calling this routine.
- You must be inside an ICBegin/End pair to call this routine.
- Deletes the preference specified by key.
- key must not be the empty string.
- Returns icPrefNotFound if the preference specified by key is not present.
- */
-
- pascal ICError ICCEnd(internetConfigurationComponent inst)
- /*
- You must specify a configuration before calling this routine.
- You must be inside an ICBegin/End pair to call this routine.
- Terminates a preference session, as started by ICBegin.
- You must have called ICBegin before calling this routine.
- */
-
- /* ***** User Interface Stuff ***** */
-
- pascal ICError ICCEditPreferences(internetConfigurationComponent inst, ConstStr255Param key)
- /*
- Requires IC 1.1.
-
- You must specify a configuration before calling this routine.
- You do not have to be inside an ICBegin/End pair to call this routine.
- Instructs IC to display the user interface associated with editing
- preferences and focusing on the preference specified by key.
- If key is the empty string then no preference should be focused upon.
- You must have specified a configuration before calling this routine.
- You do not need to call ICBegin before calling this routine.
- In the current implementation this launches the IC application
- (or brings it to the front) and displays the window containing
- the preference specified by key.
- It may have a radically different implementation in future
- IC systems.
- */
-
- /* ***** URL Handling ***** */
-
- pascal ICError ICCParseURL(internetConfigurationComponent inst, ConstStr255Param hint, Ptr data, long len,
- long *selStart, long *selEnd, Handle url)
- /*
- Requires IC 1.1.
-
- You must specify a configuration before calling this routine.
- You do not have to be inside an ICBegin/End pair to call this routine.
- Parses a URL out of the specified text and returns it in a canonical form
- in a handle.
- hint indicates the default scheme for URLs of the form "name@address".
- If hint is the empty string then URLs of that form are not allowed.
- data points to the start of the text. It must not be nil.
- len indicates the length of the text. It must be non-negative.
- selStart and selEnd should be passed in as the current selection of
- the text. This selection is given in the same manner as TextEdit,
- ie if selStart = selEnd then there is no selection only an insertion
- point. Also selStart ≤ selEnd and 0 ≤ selStart ≤ len and 0 ≤ selEnd ≤ len.
- selStart and selEnd are returned as the bounds of the URL. If the
- routine returns an error then these new boundaries may be
- invalid but they will be close.
- The incoming url handle must not be nil. The resulting URL is normalised
- and copied into the url handle, which is resized to fit.
- */
-
- pascal ICError ICCLaunchURL(internetConfigurationComponent inst, ConstStr255Param hint, Ptr data, long len,
- long *selStart, long *selEnd)
- /*
- Requires IC 1.1.
-
- You must specify a configuration before calling this routine.
- You do not have to be inside an ICBegin/End pair to call this routine.
- Parses a URL out of the specified text and feeds it off to the
- appropriate helper.
- hint indicates the default scheme for URLs of the form "name@address".
- If hint is the empty string then URLs of that form are not allowed.
- data points to the start of the text. It must not be nil.
- len indicates the length of the text. It must be non-negative.
- selStart and selEnd should be passed in as the current selection of
- the text. This selection is given in the same manner as TextEdit,
- ie if selStart = selEnd then there is no selection only an insertion
- point. Also selStart ≤ selEnd and 0 ≤ selStart ≤ len and 0 ≤ selEnd ≤ len.
- selStart and selEnd are returned as the bounds of the URL. If the
- routine returns an error then these new boundaries may be
- invalid but they will be close.
- The URL is parsed out of the text and passed off to the appropriate
- helper using the GURL AppleEvent.
- */
-
- /* ***** Mappings Routines *****
- *
- * Routines for interrogating mappings database.
- *
- * ----- High Level Routines -----
- */
-
- pascal ICError ICCMapFilename(internetConfigurationComponent inst, ConstStr255Param filename, ICMapEntry *entry)
- /*
- Requires IC 1.1.
-
- You must specify a configuration before calling this routine.
- If you are getting or setting multiple preferences, you should place
- these calls within an ICBegin/ICEnd pair.
- If you call this routine outside of such a pair, it implicitly
- calls ICBegin(inst, icReadWritePerm).
- Takes the name of an incoming file and returns the most appropriate
- mappings database entry, based on its extension.
- filename must not be the empty string.
- Returns icPrefNotFoundErr if no suitable entry is found.
- */
-
- pascal ICError ICCMapTypeCreator(internetConfigurationComponent inst, OSType fType, OSType fCreator,
- ConstStr255Param filename, ICMapEntry *entry)
- /*
- Requires IC 1.1.
-
- You must specify a configuration before calling this routine.
- You must be inside an ICBegin/End pair to call this routine.
- Takes the type and creator (and optionally the name) of an outgoing
- file and returns the most appropriate mappings database entry.
- The filename may be either the name of the outgoing file or
- the empty string.
- Returns icPrefNotFoundErr if no suitable entry found.
- */
-
- /* ----- Mid Level Routines ----- */
-
- pascal ICError ICCMapEntriesFilename(internetConfigurationComponent inst, Handle entries, ConstStr255Param filename,
- ICMapEntry *entry)
- /*
- Requires IC 1.1.
-
- You must specify a configuration before calling this routine.
- You do not have to be inside an ICBegin/End pair to call this routine.
- Takes the name of an incoming file and returns the most appropriate
- mappings database entry, based on its extension.
- entries must be a handle to a valid IC mappings database preference.
- filename must not be the empty string.
- Returns icPrefNotFoundErr if no suitable entry is found.
- */
-
- pascal ICError ICCMapEntriesTypeCreator(internetConfigurationComponent inst, Handle entries, OSType fType, OSType fCreator,
- ConstStr255Param filename, ICMapEntry *entry)
- /*
- Requires IC 1.1.
-
- You must specify a configuration before calling this routine.
- You do not have to be inside an ICBegin/End pair to call this routine.
- Takes the type and creator (and optionally the name) of an outgoing
- file and returns the most appropriate mappings database entry.
- entries must be a handle to a valid IC mappings database preference.
- The filename may be either the name of the outgoing file or
- the empty string.
- Returns icPrefNotFoundErr if no suitable entry found.
- */
-
- /* ----- Low Level Routines ----- */
-
- pascal ICError ICCCountMapEntries(internetConfigurationComponent inst, Handle entries, long *count)
- /*
- Requires IC 1.1.
-
- You must specify a configuration before calling this routine.
- You do not have to be inside an ICBegin/End pair to call this routine.
- Counts the number of entries in the mappings database.
- entries must be a handle to a valid IC mappings database preference.
- count is set to the number of entries.
- */
-
- pascal ICError ICCGetIndMapEntry(internetConfigurationComponent inst, Handle entries, long ndx, long *pos, ICMapEntry *entry)
- /*
- Requires IC 1.1.
-
- You must specify a configuration before calling this routine.
- You do not have to be inside an ICBegin/End pair to call this routine.
- Gets the ndx'th entry in the mappings database.
- entries must be a handle to a valid IC mappings database preference.
- ndx must be in the range from 1 to the number of entries in the database.
- The value of pos is ignored on input. pos is set to the position of
- the ndx'th entry in the database and is suitable for passing back
- into ICSetMapEntry.
- Does not return any user data associated with the entry.
- */
-
- pascal ICError ICCGetMapEntry(internetConfigurationComponent inst, Handle entries, long pos, ICMapEntry *entry)
- /*
- Requires IC 1.1.
-
- You must specify a configuration before calling this routine.
- You do not have to be inside an ICBegin/End pair to call this routine.
- Returns the entry located at position pos in the mappings database.
- entries must be a handle to a valid IC mappings database preference.
- pos should be 0 to get the first entry. To get the subsequent entries, add
- entry.total_size to pos and iterate.
- Does not return any user data associated with the entry.
- */
-
- pascal ICError ICCSetMapEntry(internetConfigurationComponent inst, Handle entries, long pos, ICMapEntry *entry)
- /*
- Requires IC 1.1.
-
- You must specify a configuration before calling this routine.
- You do not have to be inside an ICBegin/End pair to call this routine.
- Sets the entry located at position pos in the mappings database.
- entries must be a handle to a valid IC mappings database preference.
- pos should be either a value returned from ICGetIndMapEntry or a value
- calculated using ICGetMapEntry.
- entry is a var parameter purely for stack space reasons. It is not
- modified in any way.
- Any user data associated with the entry is unmodified.
- */
-
- pascal ICError ICCDeleteMapEntry(internetConfigurationComponent inst, Handle entries, long pos)
- /*
- Requires IC 1.1.
-
- You must specify a configuration before calling this routine.
- You do not have to be inside an ICBegin/End pair to call this routine.
- Deletes the mappings database entry at pos.
- entries must be a handle to a valid IC mappings database preference.
- pos should be either a value returned from ICGetIndMapEntry or a value
- calculated using ICGetMapEntry.
- Also deletes any user data associated with the entry.
- */
-
- pascal ICError ICCAddMapEntry(internetConfigurationComponent inst, Handle entries, ICMapEntry *entry)
- /*
- Requires IC 1.1.
-
- You must specify a configuration before calling this routine.
- You do not have to be inside an ICBegin/End pair to call this routine.
- Adds an entry to the mappings database.
- entries must be a handle to a valid IC mappings database preference.
- The entry is added to the end of the entries database.
- No user data is added.
- */
-
- #endif
-